var thisPage = {
    _rows: 0,
    _tmp_dates: null, // 数组，保存交付日期，用来排序
    // 初始化页面
    OnPageLoad: function () {
        thisPage.BuildDataTable(parent._InstancePageHeader.scheduleNode);
    },
    BuildDataTable: function (result) {
        if (result === null) {
            $('#loading').hide();
            return false;
        }
        $("#tabData01 tbody").empty();
        thisPage._rows = result.length;
        var content_01 = '';
        for (var i = 0; i < result.length; i++) {
            var id = result[i];
            content_01 += '<tr _mash_date="' + id + '">';
            content_01 += '<td class="column__action"><span title="删除" class="trash" onclick="thisPage.DoDelete(\'' + id + '\',$(this));"><i class="fa-all fa-trash-o fa-1"></i></span></td>';
            content_01 += '<td class="edited-cell">' + result[i] + '</td>';
            content_01 += '</tr>';

            $("#tabData01 tbody").append(content_01);
            content_01 = '';
        }

        setOneTableRowColor("tabData01");

        var id = "cellField";
        var name = "_cellField";
        $('#tabData01 tbody tr').find("td.edited-cell").click(function () {
            switch ($(this).index()) {
                case 1:
                    OnCellDateEditEvent($(this), id, name);
                    break;
            }
        });

        SetSlaveTableHeight();    // 自适应高度设置
        $("#loading").hide();

    },
    // 得到交付日期明细
    GetLinesData: function () {
        var jsonInsert = [];
        var jsonUpdate = [];
        var itemResult = {};
        var jsonResult = [];
        // 得到修改过数据
        $('#tabData01 tbody').find("tr").each(function () {
            var _oldDate = $.trim($(this).attr("_mash_date"));       // 旧交付日期
            var _newDate = $.trim($(this).find('td').eq(1).text());  // 新交付日期

            if ($(this).find("td.dirty").length) {
                var item = {};
                item['HeaderId'] = parseInt(parent.$("#HeaderId").val());
                item['OldScheduleDate'] = _oldDate;
                item['NewScheduleDate'] = _newDate;
                item['StyleNo'] = parent.$("#SuitStyleNo").val();
                //item['linesId'] = $(this).val();
                item['CreatedBy'] = parseInt(parent.$("#UserId").val());
                item['UpdatedBy'] = parseInt(parent.$("#UserId").val());

                if (parseInt($(this).attr("_mash_id")) === 0) {
                    jsonInsert.push(item);
                } else {
                    jsonUpdate.push(item);
                }
            }
        });
        itemResult['HeaderId'] = parseInt(parent.$("#HeaderId").val());
        itemResult['InsertList'] = jsonInsert;
        itemResult['UpdateList'] = jsonUpdate;
        jsonResult.push(itemResult);

        return JSON.stringify(itemResult);
    },
    // 保存
    DoSave: function () {
        //step 1、进行页面验证，失败则返回
        if (!CheckDateGridInput())
            return false;

        if (!thisPage.CheckDate())
            return false;

        //step 2、执行处理
        $.ajax({
            type: "POST",
            url: parent.basePath + "/trade/production_instruction/lines/schedule/save.html",
            timeout: 30 * 1000,
            data: thisPage.GetLinesData(),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
            }
        }).done(function (data) {
            // 设置交付日期
            parent._InstancePageHeader.scheduleNode = data.ScheduleNode;
            // 显示明细数据
            parent._InstancePageLines.BuildDataTable(data.LinesList);
            
            $('#tabData01 tbody').find("td.dirty").removeClass("dirty");
            thisPage.BuildDataTable(thisPage._tmp_dates);
            ShowSuccessMessagePanel('保存成功。');
            $(".success-msg").css({left: '260px', top: '8px'});
        }).fail(function (data) {
            ajaxError(data, 1);
            $(".error-msg").css({left: '180px', top: '8px'});
        }).always(function ( ) {
            thisPage._tmp_dates = null;
        });
    },
    // 删除
    DoDelete: function (schedule_date, $self) {
        if ($('#tabData01 tbody').find("tr").length <= 1) {
            ShowErrorMessagePanel('至少要保留一列交付日期。');
            $(".error-msg").css({left: '260px', top: '8px'});
            return false;
        }
        parent.showModal(357, 140, '确认删除', '', null, null, 1, '请问，确定要删除当前记录吗？',
                function () {
                    var item = {};
                    item['HeaderId'] = parseInt(parent.$("#HeaderId").val());
                    item['ScheduleDate'] = schedule_date;
                    item['StyleNo'] = parent.$("#SuitStyleNo").val();
                    item['DeletedBy'] = parseInt(parent.$("#UserId").val());

                    $.ajax({
                        type: "POST",
                        url: parent.basePath + "/trade/production_instruction/lines/schedule/delete.html",
                        timeout: 30 * 1000,
                        data: JSON.stringify(item),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        beforeSend: function () {
                        }
                    }).done(function (data) {
                        // 设置交付日期
                        parent._InstancePageHeader.scheduleNode = data.ScheduleNode;
                        // 显示明细数据
                        parent._InstancePageLines.BuildDataTable(data.LinesList);
                        // 刷新当前画面交付日期
                        $self.parent().parent().remove();
                        thisPage._rows = thisPage._rows - 1;
                        // 自适应高度设置
                        SetSlaveTableHeight();

                        ShowSuccessMessagePanel('删除成功。');
                        $(".success-msg").css({left: '260px', top: '8px'});
                    }).fail(function (data) {
                        ajaxError(data, 1);
                        $(".error-msg").css({left: '180px', top: '8px'});
                    }).always(function ( ) {
                    });
                });
    },
    // 添加新行以及新行的操作方式
    InsertNewLines: function () {
        var $newLine = $('<tr class="newLine" _mash_id="0">' +
                '    <td class="column__action"><span title="删除" class="trash" onclick="thisPage.RemoveNewLine($(this))"><i class="fa-all fa-trash-o fa-1"></i></span></td>' +
                '    <td class="edited-cell"></td>' +
                '</tr>');
        $('#tabData01 tbody').prepend($newLine);   // 加在前面
        thisPage._rows = thisPage._rows + 1;

        setOneTableRowColor("tabData01");
        SetSlaveTableHeight();  // 自适应高度设置

        var id = "cellField";
        var name = "_cellField";
        $newLine.find("td.edited-cell").click(function () {
            OnCellDateEditEvent($(this), id, name);
        });

        return $newLine;
    },
    RemoveNewLine: function ($self) {
        parent.showModal(333, 140, '删除确认', '', null, null, 1, '请问，确定要删除当前行吗？',
                function () {
                    $self.parent().parent().remove();
                    thisPage._rows = thisPage._rows - 1;
                    // 自适应高度设置
                    SetSlaveTableHeight();
                });
    },
    // 检查日期是否填写、有无重复
    CheckDate: function () {
        var arrDate = new Array();
        // 得到修改过数据
        $('#tabData01 tbody').find("tr").each(function () {
            var _date = $.trim($(this).find('td').eq(1).text());
            _date = new Date(Date.parse(_date.replace(/-/g, "/")));
            // 统一设置日期格式
            arrDate.push(_date.Format("yyyy-MM-dd"));
        });
        if (arrDate.length > 0) {
            if (isRepeat(arrDate)) {
                ShowErrorMessagePanel('错误，输入了重复日期。');
                $(".error-msg").css({left: '260px', top: '8px'});
                return false;
            }
        } else {
            ShowErrorMessagePanel('错误，没有填写交付日期。');
            $(".error-msg").css({left: '260px', top: '8px'});
            return false;
        }

        thisPage.SortDate(arrDate);
        return true;
    },
    // 对日期进行排序
    SortDate: function (object_arr) {
        thisPage._tmp_dates = object_arr.sort(
                function (a, b) {
                    return (new Date(a.replace(/-/g, '/')).getTime() - new Date(b.replace(/-/g, '/')).getTime());
                }
        );
    }
};
//-----------------------------------------------------------------------------
// 页面初始化
//-----------------------------------------------------------------------------
function onPageReady() {
    $("#form_data").data("changed", false);   // 初始化form数据提交状态

    thisPage.OnPageLoad();
}

// 画面大小或者位置移动
function onPageResize() {
}

// 根据窗口大小设置明细列表的高度（自适应高度）
function SetSlaveTableHeight() {
    var h = $(window).height();
    var _top = $("#tabHeader01").offset().top + 25;
    var _rc = Math.floor((h - _top - 25) / 25);
    var _dh = _rc * 25;
    var _tah = thisPage._rows * 25;
    _dh = (_tah >= _dh) ? _dh : _tah;

    $("#divD1").css({"max-height": _dh, height: _dh});
}

// 验证输入日期
function CheckDateGridInput() {
    $('#tabData01 tbody').find("tr").each(function () {
        var $row = $(this);
        var _date = $.trim($(this).find('td').eq(1).text());
        if (_date !== '') {
            if (!validateCNDate(_date)) {
                GridCheckErrHandle($row, 1, '请输入正确的日期。');
            } else {
                GridCheckSuccessHandle($row, 1);
            }
        } else {
            GridCheckErrHandle($row, 1, '请填写交付日期。');
        }
    });
    if ($('#tabData01 tbody').find('td.error').length > 0) {
        ShowErrorMessagePanel('填写的数据有错误。');
        $(".error-msg").css({left: '260px', top: '8px'});
        return false;
    } else {
        return true;
    }
}

function GridCheckErrHandle($row, index, errMsg) {
    $row.find('td').eq(index).addClass("error");
    $row.find('td').eq(index).attr('title', errMsg);
}
function GridCheckSuccessHandle($row, index) {
    $row.find('td').eq(index).removeClass("error");
    $row.find('td').eq(index).attr('title', '');
}